package com.itheima.controller;


import com.itheima.pojo.Emp;
import com.itheima.pojo.Result;
import com.itheima.service.EmpService;
import com.itheima.service.impl.EmpServiceImpl;
import com.itheima.utils.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

import static com.fasterxml.jackson.databind.type.LogicalType.Map;

@Slf4j
@RestController
public class LoginController {

    // 调用Service进行登录操作
    @Autowired
    private EmpService empService;  // 注入


    /**
     * 员工登录
     * @param emp
     * @return
     */

    @PostMapping("/login")    //  请求参数有两个,一个是账户 一个是密码 ,需要用哪个实体类接收?
                               // 可以直接用员工类接收,员工类刚好有这两个属性,所以这里直接放入Emp对象
    public Result login(@RequestBody Emp emp){ // 这个注解的作用就是把json格式的数据封装到实体类中去
        log.info("员工登录:{}",emp);

  Emp e = empService.login(emp);  // 这个方法有返回值,是一个Emp对象

        if(e!=null){
            Map<String, Object> claims = new HashMap<>();
        claims.put("id",1);
        claims.put("username","jinyong");
        // 生成jwt令牌信息
            String jwt = JwtUtils.generateJwt(claims);
            // 响应给页面
            return Result.success(jwt);
        }
        return Result.error("用户名或密码错误!!!");

    }

}


// 返回值进行判断,如果这个对象不等于null 则登录成功,否则提示输出语句.
//      return   e!=null?  // 设置要存到jwt中的个人信息(载荷)
//            java.util.Map<String, Object> claims = new HashMap<>();
//        claims.put("id",e.getId());
//        claims.put("username",e.getUsername());
//
//            Result.success()
//            :Result.error("用户名或密码错误") ;